package main

import "fmt"

/**
总结： 切片其实就是指向数组的头地址的一个指针，大部分与c++基本一致
*/

func main() {
	//切片的截取
	// 注意： 在截取之后，s、s1、s2都是指向的同一块地址，修改后会相互影响
	s := []int{1, 2, 3}
	fmt.Println("s=", s)
	s1 := s[0:2]
	fmt.Println("s1=", s1)
	s2 := s[1:]
	fmt.Println("s2=", s2)
	s[0] = 4
	fmt.Println(s, s1, s2)
	//copy 可以将底层数组进行拷贝
	s4 := make([]int, 3)
	// 把s的内容深拷贝 到 s4中
	// s的修改 s4不会呗修改了
	copy(s4, s)
	s[0] = 1000
	fmt.Println(s4)

}
